package com.skt.service;

import com.skt.domain.VO.BloomFilterHealthVO;
import com.skt.domain.VO.BloomFilterStatsVO;

/**
 * 布隆过滤器服务接口
 * 用于用户名存在性检查，防止缓存穿透
 * 
 * @author SKT
 * @since 2024
 */
public interface BloomFilterService {
    
    /**
     * 初始化布隆过滤器
     * 启动时加载数据库中已存在的用户名
     */
    void initBloomFilter();
    
    /**
     * 检查用户名是否可能存在
     * @param username 用户名
     * @return true: 可能存在 false: 一定不存在
     */
    boolean mightContain(String username);
    
    /**
     * 添加用户名到布隆过滤器
     * @param username 用户名
     */
    void put(String username);
    
    /**
     * 批量添加用户名
     * @param usernames 用户名列表
     */
    void putAll(java.util.Collection<String> usernames);
    
    /**
     * 获取布隆过滤器统计信息
     * @return 统计信息
     */
    BloomFilterStatsVO getStats();
    
    /**
     * 检查布隆过滤器健康状态
     * @return 健康状态信息
     */
    BloomFilterHealthVO checkHealth();
}